#include "../include/head.h"

int main(int argc, char const *argv[])
{
  // 初始化用户信息链表
  UserList *user_list = create_user_list();
  // 从文件读取用户信息
  user_list = read_user_from_file();
  // 初始化商品信息链表
  CommodityList *commodity_list = create_commodity_list();
  // 从文件读取商品信息
  commodity_list = read_commodity_from_file();
  

  char *username;

  while (1)
  {
    // 显示登录菜单
    login_menu();

    // 开始登陆
    int choice;
    int attempts = 0;
    scanf("%d", &choice);
    switch (choice)
    {
    // 管理员登录
    case 1:
      if (admin_login())
      {
        system("clear");
        printf("管理员登录成功！\n");
        while (1)
        {
          // 显示管理员菜单
          admin_menu();
          // 处理管理员操作
          int admin_choice;
          scanf("%d", &admin_choice);
          switch (admin_choice)
          {
          case 1:
            system("clear");
            add_func(commodity_list); // 添加商品
            delay();
            break;
          case 2:
            system("clear");
            search_func(commodity_list); // 查询商品
            delay();
            break;
          case 3:
            system("clear");
            display_commodities(commodity_list); // 显示所有商品
            delay();
            break;
          case 4:
            system("clear");
            stock_in_out_func(commodity_list); // 商品库存出入
            delay();
            break;
          case 5:
            system("clear");
            printf("商品信息排序\n");
            sort_commodities(commodity_list); // 商品排序
            delay();
            break;
          case 6:
            system("clear");
            // 销毁用户信息链表
            destroy_user_list(&user_list);
            // 销毁商品信息链表
            destroy_commodity_list(&commodity_list);
            printf("已退出系统\n");
            exit(0);
          default:
            printf("无效选项，请重新输入。\n");
          }
        }
      }
      else
      {
        printf("管理员登录失败！\n");
        // 销毁用户信息链表
        destroy_user_list(&user_list);
        // 销毁商品信息链表
        destroy_commodity_list(&commodity_list);
        exit(0);
      }
      break;

    // 用户登录
    case 2:
    
      if (user_login(user_list)!=0)
      {
        system("clear");
        printf("用户登录成功！\n");
        // 初始化购物车清单列表
        CommodityList *shopping_cart = create_shopping_cart_list();
        // 从文件读取购物车清单信息
        shopping_cart = read_shopping_cart_from_file();
        while (1)
        {
          // 显示用户菜单
          user_menu();
          // 处理用户操作
          int user_choice;
          scanf("%d", &user_choice);
          switch (user_choice)
          {
          case 1:
            system("clear");
            user_search_func(commodity_list,shopping_cart); // 查询商品
            delay();
            break;
          case 2:
            system("clear");
            display_commodities(commodity_list); // 显示所有商品
            delay();
            break;
          case 3:
            system("clear");
            sort_commodities(commodity_list); // 商品排序
            delay();
            break;
          case 4:
            system("clear");
            display_shopping_cart(commodity_list,shopping_cart); // 显示购物车清单
            delay();
            break;
          case 5:
            system("clear");
            // 销毁用户信息链表
            destroy_user_list(&user_list);
            // 销毁商品信息链表
            destroy_commodity_list(&commodity_list);
            // 销毁购物车清单列表
            destroy_shopping_cart_list(&shopping_cart);
            printf("已退出系统\n");
            exit(0);
          default:
            printf("无效选项，请重新输入。\n");
          }
        }
      }
      else
      {
        printf("用户登录失败！\n");
        // 销毁用户信息链表
        destroy_user_list(&user_list);
        // 销毁商品信息链表
        destroy_commodity_list(&commodity_list);
        exit(0);
      }
      break;
    // 用户注册
    case 3:
      if (attempts < 3)
      {
        // 注册用户
        user_register(user_list);
        attempts++;
        delay();
      }
      //
      else
      {
        printf("注册失败，超过最大尝试次数！\n");
        delay();
      }
      break;

    case 4:
      printf("退出系统\n");
      // 销毁用户信息链表
      destroy_user_list(&user_list);
      // 销毁商品信息链表
      destroy_commodity_list(&commodity_list);
      exit(0);
    default:
      printf("无效选项，请重新输入。\n");
      delay();
    }
  }

  return 0;
}
